#include "userlist.h"

UserList::UserList(QObject *parent) :
    QObject(parent)
{}

void UserList::addUser(User *user)
{
    if(m_units.keys().indexOf(user->unit())==-1)
    {
        QVector<int> uids;
        m_units.insert(user->unit(),uids);
    }
    m_units[user->unit()].append(user->id());
    m_usersList.insert(user->id(),user);    
}

User* UserList::user(const int &Index)
{
    return m_usersList.value(Index,0);
}

QList<User*> UserList::users(const UserType &userType)
{
    QList <User*> u_list;
    foreach(User* l_user, m_usersList.values())
    {
        if(userType==All)
        {
            u_list.append(l_user);
        }
        else
        {
            if(userType==Enabled)
            {
                if(l_user->isVisible()) u_list.append(l_user);
            }
            else
            {
                if(!l_user->isVisible()) u_list.append(l_user);
            }
        }
    }
    return u_list;
}

QStringList UserList::units() const
{
    return QStringList(m_units.keys());
}

QVector<int> UserList::uidsByUnit(const QString &unit)
{
    return m_units.value(unit);
}
